/**
 * 
 */
package cn.maszy.service.impl.customer;

import java.util.Date;
import java.util.List;
import java.util.UUID;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.maszy.common.Pager;
import cn.maszy.common.SessionFactory;
import cn.maszy.dao.contract.B_T_Ufp_ContractMapper;
import cn.maszy.dao.contract.B_T_Ufp_PaymentMapper;
import cn.maszy.dao.customer.B_T_Ufp_SellClueMapper;
import cn.maszy.dao.customer.B_T_Ufp_SellFollowMapper;
import cn.maszy.model.contract.B_T_Ufp_Contract;
import cn.maszy.model.contract.B_T_Ufp_Payment;
import cn.maszy.model.customer.B_T_Ufp_SellClue;
import cn.maszy.model.customer.B_T_Ufp_SellClueExample;
import cn.maszy.model.customer.B_T_Ufp_SellClueExample.Criteria;
import cn.maszy.model.customer.B_T_Ufp_SellFollow;
import cn.maszy.model.customer.B_T_Ufp_SellFollowExample;
import cn.maszy.service.customer.B_T_Ufp_SellClueService;

@Service
public class B_T_Ufp_SellClueServiceImpl implements B_T_Ufp_SellClueService {
	@Autowired
	private B_T_Ufp_SellClueMapper B_T_Ufp_SellClueMapper;
	@Autowired
	private B_T_Ufp_SellFollowMapper B_T_Ufp_SellFollowMapper;
	@Autowired
	private B_T_Ufp_ContractMapper b_T_Ufp_ContractMapper;
	@Autowired
	private B_T_Ufp_PaymentMapper b_T_Ufp_PaymentMapper;

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * cn.maszy.service.investment.B_T_Ufp_SellClueService#update(cn.maszy.model
	 * .investment.B_T_Ufp_SellClue,
	 * cn.maszy.model.investment.B_T_Ufp_SellClueExample)
	 */
	public int update(B_T_Ufp_SellClue B_T_Ufp_SellClue) {
		// TODO Auto-generated method stub
		if (B_T_Ufp_SellClue.getUuid() == null
				|| "".equals(B_T_Ufp_SellClue.getUuid())) {
			B_T_Ufp_SellClue.setUuid(UUID.randomUUID().toString());
			B_T_Ufp_SellClue.setIsDelete(0);
			B_T_Ufp_SellClue.setCreateTime(new Date());
			B_T_Ufp_SellClue.setCreateUser(SessionFactory
					.getSessionUserRealNam());
			return B_T_Ufp_SellClueMapper.insert(B_T_Ufp_SellClue);
		} else {
			B_T_Ufp_SellClue.setUpdateTime(new Date());
			B_T_Ufp_SellClue.setUpdateUser(SessionFactory
					.getSessionUserRealNam());
			return B_T_Ufp_SellClueMapper
					.updateByPrimaryKeySelective(B_T_Ufp_SellClue);
		}
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * cn.maszy.service.investment.B_T_Ufp_SellClueService#selectOne(java.lang
	 * .String)
	 */
	public B_T_Ufp_SellClue selectOne(String uuid) {
		// TODO Auto-generated method stub
		B_T_Ufp_SellClue record = B_T_Ufp_SellClueMapper
				.selectByPrimaryKey(uuid);
		return record;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * cn.maszy.service.investment.B_T_Ufp_SellClueService#delete(java.lang.
	 * String)
	 */
	public int delete(String checkIds) {
		// TODO Auto-generated method stub
		B_T_Ufp_SellFollowExample example1 = new B_T_Ufp_SellFollowExample();
		B_T_Ufp_SellClue record = new B_T_Ufp_SellClue();
		B_T_Ufp_SellFollow record1 = new B_T_Ufp_SellFollow();
		for (String id : checkIds.split(", ")) {
			// 逻辑删除
			// 修改主表 isdelete
			if (!"on".equals(id)) {
				record = B_T_Ufp_SellClueMapper.selectByPrimaryKey(id);
				record.setIsDelete(1);
				B_T_Ufp_SellClueMapper.updateByPrimaryKey(record);
				// 修改从表
				example1.or().andSellclueIdEqualTo(id);
				List<B_T_Ufp_SellFollow> list = B_T_Ufp_SellFollowMapper
						.selectByExample(example1);
				for (int i = 0; i < list.size(); i++) {
					record1 = B_T_Ufp_SellFollowMapper.selectByPrimaryKey(list
							.get(i).getUuid());
					record1.setIsDelete(1);
					B_T_Ufp_SellFollowMapper.updateByPrimaryKey(record1);
				}
			}
		}
		/*
		 * //删除 for (String id : checkIds.split(", ")) {
		 * example1.or().andSellclueIdEqualTo(id); //删除销售线索表数据。同时删除跟进记录表数据；
		 * B_T_Ufp_SellFollowMapper.deleteByExample(example1);
		 * B_T_Ufp_SellClueMapper.deleteByPrimaryKey(id); }
		 */
		return 1;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * cn.maszy.service.investment.B_T_Ufp_SellClueService#count(cn.maszy.model
	 * .investment.B_T_Ufp_SellClueExample)
	 */
	public int count(B_T_Ufp_SellClueExample example,
			B_T_Ufp_SellClueMapper B_T_Ufp_SellClueMapper) {
		// TODO Auto-generated method stub
		return B_T_Ufp_SellClueMapper.countByExample(example);
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * cn.maszy.service.investment.B_T_Ufp_SellClueService#selectList(cn.maszy
	 * .model.investment.B_T_Ufp_SellClue)
	 */
	public Pager<B_T_Ufp_SellClue> selectList(
			B_T_Ufp_SellClue B_T_Ufp_SellClue, Pager<B_T_Ufp_SellClue> pager) {
		// TODO Auto-generated method stub
		// 添加查询条件
		B_T_Ufp_SellClueExample example = new B_T_Ufp_SellClueExample();
		Criteria criteria = example.createCriteria();
		if (B_T_Ufp_SellClue != null) {
			if (B_T_Ufp_SellClue.getCustomername() != null
					&& !"".equals(B_T_Ufp_SellClue.getCustomername())) {
				criteria.andCustomernameLike("%"
						+ B_T_Ufp_SellClue.getCustomername() + "%");
			}

		}
		criteria.andIsDeleteEqualTo(0);
		example.or(criteria);
		int totalCount = new B_T_Ufp_SellClueServiceImpl().count(example,
				B_T_Ufp_SellClueMapper);
		pager.setTotalRecords(totalCount);
		example.setLimitStart(pager.getStartRecord());
		example.setLimitEnd(pager.getPageSize());
		example.setOrderByClause(pager.getOrderField() + " "
				+ pager.getOrderDirection());

		// 取得总的记录条数
		List<B_T_Ufp_SellClue> list = B_T_Ufp_SellClueMapper
				.selectByExample(example);
		pager.setPageRecords(list);
		return pager;
	}

	public int saleSuccess(String checkIds) {
		// TODO Auto-generated method stub
				B_T_Ufp_SellClue record = new B_T_Ufp_SellClue();
				B_T_Ufp_Contract b_T_Ufp_Contract = new B_T_Ufp_Contract();
				B_T_Ufp_Payment b_T_Ufp_Payment = new B_T_Ufp_Payment();
				for (String id : checkIds.split(", ")) {
					// 销售成功关闭销售线索
					if (!"on".equals(id)) {
						record = B_T_Ufp_SellClueMapper.selectByPrimaryKey(id);
						record.setStatus("1");
						/* 销售成功后，生成一张合同单据 */
						b_T_Ufp_Contract.setUuid(UUID.randomUUID().toString());
						b_T_Ufp_Contract.setIsDelete(0);
						b_T_Ufp_Contract.setCreateTime(new Date());
						b_T_Ufp_Contract.setCreateUser(SessionFactory.getSessionUserRealNam());
						b_T_Ufp_Contract.setContractparty(record.getCustomername());
						/*生成合同的同时,跟合同的付款表，关联上。*/
						b_T_Ufp_Payment.setUuid(UUID.randomUUID().toString());
						b_T_Ufp_Payment.setSerialnumber(b_T_Ufp_Contract.getUuid());
						/* 三张表的插入更新  */
					 	b_T_Ufp_PaymentMapper.insert(b_T_Ufp_Payment);
						B_T_Ufp_SellClueMapper.updateByPrimaryKey(record);
						b_T_Ufp_ContractMapper.insert(b_T_Ufp_Contract);
					}
				}
		return 1;
	}
}
